The two-dimensional code decoding algorithm based on image processing can be generally divided into six steps: acquiring an image, preprocessing image, positioning and correcting, reading data, error correcting and decoding. The basic step of image preprocessing includes gray-scale transformation, image filtration, threshold segmentation and edge detection, and binarization is included in the threshold segmentation. After enhancement algorithms such as contrast adaption and brightness adjustment are applied to the obtained gray-scale image, the background and the target in the image are segmented using the binarized image algorithm, and the image is converted into an image with only two colors of black and white for subsequent use in decoding.
However, due to factors such as different media on which the two-dimensional code is attached, different lighting environments and different imaging systems, the two-dimensional code images captured by the two-dimensional code reading devices may differ greatly, and the influence of noise, image lighting unevenness and a contrast that is too large or too small will all make the conversion of the two-dimensional code image into a binarized image be very complicated. However, the effect of image binarization process has a direct influence on the two-dimensional code reading effect. The binarization methods in the prior art have some deficiencies in dealing with a complicated background, and cannot well handle problems such as darkness, uneven lighting, too large contrast, or too small contrast, thus failing to obtain a good binarization effect. A poor binarization effect of the image increases the difficulty in subsequent decoding, or increases amount of operation, or reduces accuracy of decoding, and may even results in that the decoding step cannot be performed successfully.
Chinese invention patent publication No. CN104517089A discloses a two-dimensional code decoding system and method. The decoding method includes: binarizing a two-dimensional code image to obtain a binarized image, and the binarization processing includes: segmenting the two-dimensional code image to obtain several block regions; acquiring gray-scale values of all the pixels in each of the block regions, and obtaining a gray-scale value of each of the block regions according to the gray-scale values of all the pixels; calculating a gray-scale threshold of each of the block regions according to an average gray-scale value of the predetermined range in which the block region is located; binarizing pixels in the block region to obtain a binarized image, according to the gray-scale threshold corresponding to each of the block regions; and decoding the binarized image to obtain information content contained in the two-dimensional code. In binarizing the code image, by segmenting the code image into blocks, the average gray-scale value of a predetermined range of the block region in which the pixel is located is considered when determining whether the pixel in each block region is black or white during the process of restoring the code image. In this way, interference from the external environment is avoided. The two-dimensional code image is segmented into n*n block regions, where n>1. The two-dimensional code image is not segmented based on the functional modules of the two-dimensional code, and therefore information in the functional modules of the two-dimensional code cannot be positioned and decoded quickly and accurately. Moreover, the two-dimensional code image is decoded by binarizing the pixels in the block regions after the gray-scale threshold of each block region is calculated, and one pixel does not indicate one data bit of the two-dimensional code image. Therefore, a process of decoding the two-dimensional code by binarizing the pixels is complicated.